home *** CD-ROM | disk | FTP | other *** search
/ Fritz: All Fritz / All Fritz.zip / All Fritz / FILES / GRAPTIES / SD204.LZH / EXAMPLE1.PAS < prev    next >
Pascal/Delphi Source File  |  1980-01-01  |  5KB  |  181 lines

  1. {======================================================================}
  2. PROGRAM LOAD_FILES;
  3.  
  4. USES CRT;
  5.  
  6. TYPE
  7.    Map         = Record
  8.                   ScrCh : Char;
  9.                   ScrAt : Byte;
  10.                   End;
  11.  
  12.    Screen      = Array[1..25,1..80] of Map;
  13.    AnyStr      = String[80];
  14.  
  15. VAR
  16.     CS         : Screen absolute $B800:0000;
  17.     MS         : Screen absolute $B000:0000;
  18.     Filenm     : AnyStr;
  19.     TempStr    : AnyStr;
  20.     Color      : Boolean;
  21.  
  22. {======================================================================}
  23. PROCEDURE Load_ASCII(AFile : AnyStr);
  24. {                                                     }
  25. { This routine loads an ASCII format file as created  }
  26. { by BOX onto the screen.                             }
  27. {                                                     }
  28.  
  29. VAR
  30.     FilevarA   : Text;
  31.     II         : Integer;
  32.  
  33. BEGIN
  34.       Assign(FilevarA,AFile);
  35.       {$I-} Reset(FilevarA); {$I+}
  36.       If IOresult = 0 then                        {found good file name}
  37.        Begin
  38.         ClrScr;
  39.         For II := 1 to 25 do
  40.         Begin
  41.          Readln(FilevarA,TempStr);
  42.          GoToXY(1,II);
  43.          Write(TempStr);
  44.         End;
  45.         Close(FilevarA);
  46.        End
  47.  
  48.       Else                                        {couldn't find file  }
  49.         Begin
  50.           GoToXY(1,24);
  51.           Write('ERROR - Could not find file');
  52.         End;
  53.  
  54. END; {Load_ASCII}
  55.  
  56. {======================================================================}
  57. PROCEDURE CheckColor;
  58. {                                                     }
  59. { Checks memory for presence of color adapter card.   }
  60. { Sets Color to true if the color adapter is present. }
  61. {                                                     }
  62.  
  63. BEGIN
  64.      If (Mem[0000:1040] and 48) <> 48
  65.         then Color := True
  66.         else Color := False;
  67. END;
  68.  
  69. {======================================================================}
  70. PROCEDURE Load_MEM(MFile : AnyStr);
  71. {                                                     }
  72. { This routine loads a memory format file as created  }
  73. { by BOX directly into the video buffer.  Since a     }
  74. { memory format file is the same shape as the video   }
  75. { buffer, all that needs to be done is to move the    }
  76. { screen into the buffer (CS := LoadScr;)             }
  77. {                                                     }
  78.  
  79. VAR
  80.     FilevarM   : File;
  81.     LoadScr    : Screen;
  82.  
  83. BEGIN
  84.       Assign(FilevarM,MFile);
  85.       {$I-} Reset(FilevarM,4000); {$I+}
  86.       If IOresult = 0 then                        {found good file name}
  87.         Begin
  88.         BlockRead(FilevarM,LoadScr,1);
  89.           If Color then CS := LoadScr
  90.                    else MS := LoadScr;
  91.           Close(FilevarM);
  92.         End
  93.       Else                                        {couldn't find file  }
  94.         Begin
  95.           GoToXY(1,24);
  96.           Write('ERROR - Could not find file');
  97.         End;
  98. END; {Load_MEM}
  99.  
  100. {======================================================================}
  101. PROCEDURE Load_PAK(PFile:AnyStr);
  102. {                                                     }
  103. { This procedure loads a Packed Format screen created }
  104. { by BOX.  The Packed format utilizes a run-length    }
  105. { encoding scheme that must be unpacked.  Each record }
  106. { in a Packed Format file is three bytes long. Byte 1 }
  107. { is the run length, i.e. the number of characters to }
  108. { repeat.  Byte 2 is the character to repeat and      }
  109. { byte 3 is the attribute of the character.           }
  110. {                                                     }
  111. TYPE
  112.    Pack        = Record  
  113.                   PackNm : Byte;  {run length}
  114.                   PackCh : Char;  {repeated character}
  115.                   PackAt : Byte;  {repeated attribute}
  116.                  End;
  117.  
  118. VAR
  119.     FilevarM   : File;
  120.     LoadScr    : Screen;
  121.     Packbuf    : Array[1..2000] of Pack;
  122.     II,JJ,Sloc,SX,SY,NumRec  : Integer;
  123.  
  124. BEGIN
  125.    Sloc := 1;              {SLoc is location on screen}
  126.    Assign(FilevarM,PFile);
  127.    {$I-} Reset(FilevarM); {$I+}
  128.    If IOresult = 0 then          {found good file name}
  129.      Begin
  130.         BlockRead(FilevarM,PackBuf,48,NumRec);  
  131.         JJ := 0;
  132.         While Sloc < 2001 do 
  133.         Begin
  134.           JJ := JJ + 1;
  135.           For II := 1 to Packbuf[JJ].PackNm do  
  136.            Begin
  137.             SY := (SLoc-1) div 80 + 1;       {row}
  138.             SX := (SLoc-1) mod 80 + 1;       {column}
  139.             LoadScr[SY,SX].ScrCh := Packbuf[JJ].PackCh; 
  140.             LoadScr[SY,SX].ScrAt := Packbuf[JJ].PackAt;
  141.             SLoc := SLoc + 1;   
  142.            End;
  143.         End;
  144.         If Color then CS := LoadScr
  145.                  else MS := LoadScr;
  146.         Close(FilevarM);
  147.    End
  148.    Else                            {couldn't find file}
  149.      Begin
  150.        GoToXY(1,24);
  151.        Write('ERROR - Could not find file');
  152.      End;
  153. END;
  154.  
  155. {======================================================================}
  156. PROCEDURE Pause;
  157. VAR
  158.   Dummy : Char;
  159. Begin
  160.   GoToXY(1,25);
  161.   ClrEol;
  162.   GoToXY(1,25);
  163.   Write('Hit any key to continue');
  164.   Dummy := ReadKey;
  165. End;
  166.  
  167. {======================================================================}
  168. BEGIN {Main Routine}
  169.   ClrScr;
  170.   Load_ASCII('EXAMPLE1.ASC');
  171.   Pause;
  172.  
  173.   CheckColor;
  174.   Load_MEM('EXAMPLE1.MEM');
  175.   Pause;
  176.  
  177.   CheckColor;
  178.   Load_PAK('EXAMPLE1.PAK');
  179.   Pause;
  180. END.
  181.